/*
 * @Author: SeonHu
 * @Date: 2025-09-16 14:44:19
 * @LastEditors: SeonHu
 * @LastEditTime: 2025-09-23 15:32:41
 * @FilePath: \bg-vben\src\api\report\db.ts
 * @Description:
 * Copyright © 2020-2025 SANQING Corporation, All rights reserved.
 */
import type { DbConnectDto, DbLinkNode, DbQueryDto } from './/model/db';

import type { ErrorMessageMode } from '#/request';

import { request } from '@/utils/request/axios';

/** 报表模块数据库处理URL枚举 */
enum Api {
  /** 获取数据库链接节点 */
  GetDbLinkNodes = '/api/db/getDbLinkNodes',

  /** 校验连接 */
  CheckConnect = '/api/db/checkConnect',
  /** 查询 */
  Query = '/api/db/query',
}

// #region 获取数据库链接节点
/**
 * 获取数据库链接节点
 * @param mode 错误消息模型
 */
export function getDbLinkNodes(mode: ErrorMessageMode = 'message') {
  return request.get<DbLinkNode[]>(
    {
      url: Api.GetDbLinkNodes,
    },
    {
      errorMessageMode: mode,
    },
  );
}
// #endregion

// #region 校验连接
/**
 * 校验连接
 * @param dto 输入DTO
 * @param mode 错误消息模型
 */
export function checkDbConnect(dto: DbConnectDto, mode: ErrorMessageMode = 'message') {
  return request.post(
    {
      url: Api.CheckConnect,
      params: dto,
    },
    {
      errorMessageMode: mode,
    },
  );
}
// #endregion
// #region 查询
/**
 * 查询
 * @param dto 输入DTO
 * @param mode 错误消息模型
 */
export function dbQuery(dto: DbQueryDto, mode: ErrorMessageMode = 'message') {
  return request.post(
    {
      url: Api.Query,
      params: dto,
    },
    {
      errorMessageMode: mode,
    },
  );
}
// #endregion
